给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
输入格式:
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。
输出格式:
按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。
输入样例:
输出样例:
思路
c++ stl 中容器stack的基本使用,注意需要使用s.empty()来判断栈是否为空
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | #include <iostream> #include <stack> using namespace std; int main() {     stack<int> s;     int n;     cin >> n;     for (int i = 0; i < n; i++) {         int x;         cin >> x;         if (x) {             int y;             cin >> y;             s.push(y);         } else {             if (!s.empty()) {                 cout << s.top() << endl;                 s.pop();             } else                 cout << "invalid" << endl;         }     }     return 0; }
   |